
#ifndef ICLASSARRAY_H
#define ICLASSARRAY_H

#include <BClass>

namespace BWE
{
	class ClassArray : public BClass
	{
	public:
		ClassArray();

		virtual BClass* clone() const;

	protected:
		void create(int argc, BValue* argv);
		void create_size(int argc, BValue* argv);
		void create_value_size(int argc, BValue* argv);
		void create_array(int argc, BValue* argv);
		void create_array_pos_size(int argc, BValue* argv);
		void release(int argc, BValue* argv);

		void empty(int argc, BValue* argv);
		void size(int argc, BValue* argv);
		void capacity(int argc, BValue* argv);
		void reset(int argc, BValue* argv);
		void clear(int argc, BValue* argv);

		void resize(int argc, BValue* argv);
		void reserve(int argc, BValue* argv);
		void check(int argc, BValue* argv);

		void set_pos_value(int argc, BValue* argv);
		void set_pos_array(int argc, BValue* argv);

		void fill_value(int argc, BValue* argv);
		void fill_value_pos_size(int argc, BValue* argv);

		void find(int argc, BValue* argv);
		void rfind(int argc, BValue* argv);

		void count(int argc, BValue* argv);
		void contain(int argc, BValue* argv);
		void replace(int argc, BValue* argv);

		void move(int argc, BValue* argv);
		void swap(int argc, BValue* argv);

		void reverse(int argc, BValue* argv);

		void raise(int argc, BValue* argv);
		void lower(int argc, BValue* argv);

		void first(int argc, BValue* argv);
		void first_const(int argc, BValue* argv);

		void last(int argc, BValue* argv);
		void last_const(int argc, BValue* argv);

		void middle(int argc, BValue* argv);
		void middle_const(int argc, BValue* argv);

		void at(int argc, BValue* argv);
		void at_const(int argc, BValue* argv);

		void def(int argc, BValue* argv);
		void def_const(int argc, BValue* argv);

		void append(int argc, BValue* argv);
		void append_value(int argc, BValue* argv);
		void append_value_size(int argc, BValue* argv);
		void append_array_pos_size(int argc, BValue* argv);

		void prepend(int argc, BValue* argv);
		void prepend_value(int argc, BValue* argv);
		void prepend_value_size(int argc, BValue* argv);
		void prepend_array_pos_size(int argc, BValue* argv);

		void insert_pos_value(int argc, BValue* argv);
		void insert_pos_value_size(int argc, BValue* argv);
		void insert_pos_array_first_size(int argc, BValue* argv);

		void remove_pos_size(int argc, BValue* argv);
		void remove_value(int argc, BValue* argv);
		void remove_array(int argc, BValue* argv);

		void operator_brackets(int argc, BValue* argv);
		void operator_square_brackets(int argc, BValue* argv);
		void operator_equal_array(int argc, BValue* argv);
		void operator_plus_value(int argc, BValue* argv);
		void operator_plus_array(int argc, BValue* argv);
		void operator_plus_equal_value(int argc, BValue* argv);
		void operator_minus_equal_value(int argc, BValue* argv);
		void operator_append_value(int argc, BValue* argv);
		void operator_append_array(int argc, BValue* argv);
		void operator_equal(int argc, BValue* argv);
		void operator_unequal(int argc, BValue* argv);
	};
}

#endif
